package com.nowcoder.community.service;

import java.util.List;
import java.util.Map;

/**
 * @author 花木凋零成兰
 * @date 2024/3/18 15:46
 */
public interface FollowService {

    /**
     * 关注某个实体
     * @param userId
     * @param entityType
     * @param entityId
     */
    void follow(int userId, int entityType, int entityId);

    /**
     * 取消关注某个实体
     * @param userId
     * @param entityType
     * @param entityId
     */
    void unfollow(int userId, int entityType, int entityId);

    /**
     * 查询关注的实体的数量
     *
     * @param userId
     * @param entityType
     * @return
     */
    long findFolloweeCount(int userId, int entityType);

    /**
     * 查询某实体 粉丝的数量
     * @param entityType
     * @param entityId
     * @return
     */
    long findFollowerCount(int entityType, int entityId);

    /**
     * 查询当前用户是否关注了某实体
     * @param userId
     * @param entityType
     * @param entityId
     * @return
     */
    boolean hasFollowed(int userId, int entityType, int entityId);

    /**
     * 查询某用户关注的人 列表
     * @param userId
     * @param offset
     * @param limit
     * @return
     */
    List<Map<String, Object>> findFollows(int userId, int offset, int limit);

    /**
     * 查询某用户的粉丝
     * @param userId
     * @param offset
     * @param limit
     * @return
     */
    List<Map<String, Object>> findFollowers(int userId, int offset, int limit);

}
